package chapter_15;

public class EnumTest {

    public static void main(String[] args) {

        enumTest();

        enumArray();

        enumEquals();
    }

    /**
     * Enum 测试方法
     */
    private static void enumTest(){

        // 工作日变量
        Enum day = Enum.FRIDAY;
        // 打印 day 默认调用枚举toString()方法
        System.out.println(day);
        // 调用枚举实例方法
        System.out.println(day.getInfo());
        // 调用枚举静态方法
        System.out.println(Enum.getStaticVar());

        switch (day) {
            case MONDAY:
                System.out.println("星期一");
            case TUESDAY:
                System.out.println("星期二");
            case WEDNESDAY:
                System.out.println("星期三");
            case THURSDAY:
                System.out.println("星期四");
            default:
                System.out.println("星期五");
        }

    }

    /**
     * 返回一个包含全部枚举常量的数组
     */
    private static void enumArray(){

        Enum[] allValues = Enum.values();
        // 遍历枚举常量数值
        for (Enum value : allValues) {
            System.out.printf("%d - %s;\t",value.ordinal(),value);
        }

        System.out.println("\r");
    }

    /**
     * Enum 对象相等测试
     */
    private static void enumEquals(){
        // 创建WeekDays对象
        Enum day1 = Enum.MONDAY;
        Enum day2 = Enum.valueOf("MONDAY");

        System.out.println(day1 == Enum.MONDAY);
        System.out.println(day1.equals(Enum.MONDAY));
        System.out.println(day1 == day2);
        System.out.println(day1.equals(day2));
    }

}
